/*
 * GaseousPhase.h
 *
 *  Created on: 28 May 2011
 *      Author: allan
 */

#ifndef GASEOUSPHASE_H_
#define GASEOUSPHASE_H_

// GeoReact includes
#include "Phase.h"
#include "Utils.h"

class GaseousPhase : public Phase
{
public:
	GaseousPhase();
	
	GaseousPhase(const StringVector& species);
	
	virtual ~GaseousPhase();
	
	/// --- Setter methods --- ///
	void
	SetSpecies(const StringVector& species);

	/// --- Computation methods --- ///	
	const DoubleVector
	FugacityCoefficients(double T, double P, const DoubleVector& n) const;
	
	const DoubleVector
	Fugacities(double T, double P, const DoubleVector& n) const;

	/// --- Phase virtual methods --- ///
	virtual	const String
	GetName() const;
	
	virtual const StringVector
	GetSpecies() const;
	
	virtual const DoubleVector 
	ActivityCoefficients(double T, double, const DoubleVector& n) const;
	
	virtual const DoubleVector
	Activities(double T, double, const DoubleVector& n) const;
	
private:
	StringVector species;
};

#endif /* GASEOUSPHASE_H_ */
